import os, xlrd

'''
获取指定目录下所有excel下所有的sheet的数据

'''
path = os.path.abspath(os.path.dirname(__file__))
data_path = path[0:-7].replace('\\', '/')+'/excel_cases'

# 获取目录下所有Excel中sheet
def getTables():
    table= {}
    for excel in os.listdir(data_path):  # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
        excelPath = os.path.join(data_path, excel)  # 拼接路径
        excelPath = excelPath.replace('\\', '/')
        excels = xlrd.open_workbook(excelPath)
        sheetNames = excels.sheet_names()  # 获取目录下所有sheet的名字，sheetNames为list类型
        # 循环从sheetNames中读取sheet表，返回的是sheet的内存地址
        for sheet in sheetNames:
            # print(sheet)
            table1 = excels.sheet_by_name(sheet)
            table[table1]=[sheet,excelPath]
    # print(table)
    return table
# getTables()
# 从getTables()中返回的table中提取数据，sheet中的数据组成一个列表，Excel中的表头和数据分别组成key:value的格式
def getData(sheets):
    data = []
    skip_count=[]
    for key in sheets:
        for i in range(1, key.nrows):
            if 'Y' in key.row_values(i):
                row_dict=dict(zip(key.row_values(0), key.row_values(i)))
                row_dict['info'] = sheets[key]
                data.append(row_dict)
                # print('读取出的data:', data)
            else:  # is_run 状态为N的不添加进去字段 不执行
                skip_count.append('N')
    # print(len(skip_count))
    # print(len(data))
    return [data,skip_count]
data =getData(getTables())
# print(data[1])
# print('excel接口测试用例条数汇总：',len(data))
# print(type(data[0]['headers']))
# print(len(data[0]['headers']))
# if len(data[0]['headers'])==0:
#     print(222)


# for i in data:
#     print(i)
#     print(i['headers'])
